1. The Field of the Invention
This invention relates to computer software protection systems and methods and, more particularly, to a novel system and method for preventing the unauthorized duplication and use of computer software.
2. The Prior Art
During recent years, the number of computers in use throughout the world has grown dramatically. For example, an increasing number of businesses, even small to medium size businesses, are automating various portions of their operations, such as, for example, their accounting and inventory management operations. In addition, many families and individuals are now using various types of home computers for a wide variety of purposes, including education, financial management, and entertainment.
As a result of this significant and continuing increase in computer usage, there has been a corresponding increase in the need for computer software for various applications. As used herein, computer software includes operating systems, application programs, or any combination of these which are in machine-readable form and which are required to enable a desired operation of a computer system. While computer software was, perhaps, once thought to have only a secondary position in the marketplace relative to computer hardware, computer software development and distribution has now become a large, profitable business in and of itself. Thus, it is not surprising that thousands of computer software development and/or distribution firms are now in existence and are actively developing and/or marketing software packages for use on various types of computer systems. As a result, even the unsophisticated computer user is now able to perform relatively complex tasks on a computer by using one of the many software packages which are commercially available.
When developing computer software, a developer will typically have a relatively large initial investment of time and other resources. For example, a software developer must first identify and define the requirements which must be met by the particular software to be developed and must then try to integrate all of these requirements into a workable software package. This generally entails preparing numerous flow charts and other materials which define how the software system will operate in response to various inputs and outputs. Once the software package is thus defined, the software is then written in some form, typically in one of the standard computer languages, such as BASIC, FORTRAN or COBOL. Finally, the software is coded in machine-readable form and stored on some type of storage medium, such as, for example, on magnetic tapes or diskettes. The computer software is then ready to be loaded into and used on the intended computer system. Significantly, the entire development process can take several months to complete, depending upon the complexity of the software package being developed.
Once a software package is fully developed as set forth above, the software developer will then usually license or otherwise distribute to computer users copies of the software on some storage media (such as, on magnetic tapes or diskettes). If the software package has been developed for a single, specific computer user, the software developer may be able to recover all of the costs of software development from such single user. More commonly, however, the software developer hopes to be able to market the software package to numerous computer users and to have each of such users bear only a portion of the development costs. Advantageously, such a marketing of the software package helps make the software less expensive such that it may be purchased by a larger number of users; and such marketing may also increase the profits which are ultimately obtained by the software developer.
Unfortunately, however, after a copy of a software package has been distributed to a computer user, such user sometimes makes additional copies the software and distributes them to others for use on other computer systems. This is typically done by copying the software from the storage medium provided by the software developer onto a second, similar storage medium. Thus, for example, if the software developer provided the software to a user on a magnetic diskette, such user might copy of the software onto a second magnetic diskette. This second diskette could then be used by others both to load the software into and to run the software on other computer systems.
Occasionally, such additional copies of the software package are then actually sold by a competing software distributor who, of course, keeps the profits from such sales. Such copies of the software may also be shared or distributed to others more informally through computer clubs and/or various software libraries. Importantly, such copying and distribution of the software package may significantly decrease the market share available to the original software developer. As a result, the software developer may not be able to make any profit on the software package, while others are able to distribute the software package at a very low price and make a relatively large profit. Even more unfortunately, the software developer may not even be able to completely recover its software development costs.
Although various types of legal protection are available to prevent the unauthorized copying, distribution, and use of computer software, it is often quite difficult to even find out that the computer software is being copies. This is particularly the case when the copies of the software are not being sold on the open market but are, rather, being distributed or shared informally among many computer users. As a result of this difficulty, therefore, various systems and methods for technologically protecting computer software have been developed and are currently being used in the software industry.
One of the most common types of prior art software protection methods consists of writing the software such that it will not permit copies to be made unless a certain "key" is provided. Such a method may comprise requiring that a password or code be given by the user before the software can be copied or, alternatively, permitting the software to be copied only on a particular machine which is in the possession of an authorized individual. Hence, if an unauthorized individual should try to make a copy of software which is thus protected, the computer software would simply fail to execute the copy command.
An alternate form of the above-described type of software protection method additionally comprises providing that the software will disassemble or scramble itself if an unauthorized copy is attempted to be made. Thus, if an unauthorized individual attempts to make a copy of the protected software, the software will be rendered either entirely or partially useless.
Prior art methods of software protection have also included the licensing of each authorized copy of the software to a particular machine or device. Then, the software is written so as to first execute a subroutine during normal operation which identifies the machine on which the software is being run and checks to be sure that the software is licensed on that machine. If it is determined that the machine which is being used is not an authorized machine, the software will not operate. Typically, the software then causes a message to be displayed on the terminal screen or printer which instructs the user to contact the software developer. This type of a protection device may also provide for the disassembling or scrambling of the software as set forth above.
While the foregoing prior art software protection methods have helped reduce the amount of unauthorized copying and distribution of computer software, these protection methods have proven inadequate in a number of ways. First, many programmers have become quite good at breaking through these prior art protection schemes in order to secure copies of the software. For example, an experienced programmer may be able to manipulate the software so as to override or remove the protection code or subroutine and thereby permit the software to be copied. In addition, once the prior art software protection methods have been disabled, the software can be copied in its entirety from the storage medium and is, thus, immediately available for distribution to and use by others.
Accordingly, it would be an improvement in the art to provide a system and method for protecting computer software which does not allow a complete copy of the software to be readily obtained. It would also be an improvement in the art to provide a system and method for computer software protection wherein copied software could not be readily used on another computer system. Such a system and method is disclosed and claimed herein.